﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using _4.Modelado.Eventos;

namespace _3.Datos.Eventos
{
    public class Evento_MiembroDB
    {
        /// <summary>
        ///     Este método inserta y modifica una área
        /// </summary>
        /// <param name="comando">sentencia SQL</param>
        /// <param name="obj">Contiene las variable de Articulo</param>
        public void Evento_MiembroGuardar(SqlCommand comando, Evento_Miembro obj)
        {
            try
            {
                string sp = "usp_Evento_MiembroGuardar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@FK_Miembro", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Evento", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@EvMiembroAbono ", SqlDbType.Money));
                comando.Parameters.Add(new SqlParameter("@EvMiembroSaldo", SqlDbType.Money));
                comando.Parameters.Add(new SqlParameter("@EvMiembroFechaAbono", SqlDbType.DateTime));
                comando.Parameters.Add(new SqlParameter("@Fk_Usuario_MiembroEvento", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@EvMiembroObservaciones", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@PK_Evento_Miembro", SqlDbType.Int));

                comando.Parameters[0].Value = obj.FK_Miembro;
                comando.Parameters[1].Value = obj.FK_Evento;
                comando.Parameters[2].Value = obj.EvMiembroAbono;
                comando.Parameters[3].Value = obj.EvMiembroSaldo;
                comando.Parameters[4].Value = obj.EvMiembroFechaAbono;
                comando.Parameters[5].Value = obj.Fk_Usuario_MiembroEvento;
                comando.Parameters[6].Value = obj.EvMiembroObservaciones;
                comando.Parameters[7].Value = obj.PK_Evento_Miembro;

                comando.ExecuteNonQuery();
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<Evento_Miembro> Evento_MiembroConsultar(SqlCommand comando, Evento_Miembro objEvento_Miembro)
        {
            try
            {
                string sp = "usp_Evento_MiembroConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter(comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                var lista = new List<Evento_Miembro>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var obj = new Evento_Miembro();

                    obj.FK_Miembro = Convert.ToInt32(dt.Rows[i]["FK_Miembro"]);
                    obj.FK_Evento = Convert.ToInt32(dt.Rows[i]["FK_Evento"]);
                    obj.EvMiembroAbono = Convert.ToDecimal(dt.Rows[i]["EvMiembroAbono"]);
                    obj.EvMiembroSaldo = Convert.ToDecimal(dt.Rows[i]["EvMiembroSaldo"]);
                    obj.EvMiembroFechaAbono = Convert.ToDateTime(dt.Rows[i]["EvMiembroFechaAbono"]);
                    obj.Fk_Usuario_MiembroEvento = Convert.ToInt32(dt.Rows[i]["Fk_Usuario_MiembroEvento"]);
                    obj.EvMiembroObservaciones = Convert.ToString(dt.Rows[i]["EvMiembroObservaciones"]);

                    lista.Add(obj);
                }
                return lista;
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public DataSet Evento_MiembroConsultarDs(SqlCommand comando, Evento_Miembro objEvento_Miembro)
        {
            try
            {
                string sp = "usp_Evento_MiembroConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;

                comando.Parameters.Add("@FK_Miembro", objEvento_Miembro.FK_Miembro);
                comando.Parameters.Add("@FK_Evento", objEvento_Miembro.FK_Evento);

                IDataAdapter da = new SqlDataAdapter(comando);
                var ds = new DataSet();
                da.Fill(ds);

                return ds;
            }
            catch (Exception exc)
            {
                throw;
            }
        }


        public void Evento_MiembroEliminar(SqlCommand comando, Evento_Miembro obj)
        {
            try
            {
                string sp = "usp_Evento_MiembroEliminar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_Evento_Miembro", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Miembro", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Evento", SqlDbType.Int));

                comando.Parameters[0].Value = obj.PK_Evento_Miembro;
                comando.Parameters[1].Value = obj.FK_Miembro;
                comando.Parameters[2].Value = obj.FK_Evento;


                comando.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
    }
}